package servidor.run;

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.List;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JMenuBar;
import javax.swing.JMenu;
import javax.swing.JMenuItem;

import dominio.dao.HibernateDAO;

import servicio.ServidorImp;
import servidor.run.paneles.AltaProveedor;
import servidor.run.paneles.EliminarProveedor;
import servidor.run.paneles.ModificarProveedor;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import dominio.beans.*;
import java.util.*;



public class ServidorRunn extends JFrame {

	private JPanel contentPane;
	private static HibernateDAO dao;

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					ServidorImp servidor = new  ServidorImp();
					ServidorRunn frame = new ServidorRunn(servidor);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
		
		dao = HibernateDAO.getInstancia();
		List<Cliente> clientes = new ArrayList<Cliente>();
		
		//dao.grabarClientes("Empresa1", "33-12345678-9", (float)10.0, "Descuento amigo");
		
		
		
		
	}

	/**
	 * Create the frame.
	 * @param server 
	 */
	public ServidorRunn(final ServidorImp servidor) {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 450, 300);
		
		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);
		
		JMenu mnSalir = new JMenu("Salir");
		menuBar.add(mnSalir);
		
		JMenuItem mntmSalir = new JMenuItem("Salir");
		mnSalir.add(mntmSalir);
		
		JMenu mnProveedor = new JMenu("Proveedor");
		menuBar.add(mnProveedor);
		
		JMenuItem mntmAltaProveedor = new JMenuItem("Alta Proveedor");
		
		mnProveedor.add(mntmAltaProveedor);
		
		JMenuItem mntmModificarProveedor = new JMenuItem("Modificar Proveedor");

		mnProveedor.add(mntmModificarProveedor);
		
		JMenuItem mntmEliminarProveedor = new JMenuItem("Eliminar Proveedor");
		
		mnProveedor.add(mntmEliminarProveedor);
		
		JMenu mnStock = new JMenu("Stock");
		menuBar.add(mnStock);
		
		JMenuItem mntmAltaStockRodamientos = new JMenuItem("Alta Stock Rodamientos");
		
		mnStock.add(mntmAltaStockRodamientos);
		
		JMenuItem mntmModificarStockRodamientos = new JMenuItem("Modificar Stock Rodamientos");
		
		mnStock.add(mntmModificarStockRodamientos);
		
		JMenuItem mntmEliminarStockRodamientos = new JMenuItem("Eliminar Stock Rodamientos");
		
		mnStock.add(mntmEliminarStockRodamientos);
		
		JMenu mnFactura = new JMenu("Factura");
		menuBar.add(mnFactura);
		
		JMenuItem mntmGenerarFactura = new JMenuItem("Generar Factura");
		
		mnFactura.add(mntmGenerarFactura);
		
		JMenu mnCotizacion = new JMenu("Cotizacion");
		menuBar.add(mnCotizacion);
		
		JMenuItem mntmSolicitudCotizacion = new JMenuItem("Solicitud Cotizacion ");
		
		mnCotizacion.add(mntmSolicitudCotizacion);
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		GroupLayout gl_contentPane = new GroupLayout(contentPane);
		gl_contentPane.setHorizontalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGap(0, 424, Short.MAX_VALUE)
		);
		gl_contentPane.setVerticalGroup(
			gl_contentPane.createParallelGroup(Alignment.LEADING)
				.addGap(0, 252, Short.MAX_VALUE)
		);
		contentPane.setLayout(gl_contentPane);
		/**
		 * Eventos
		 */
		mntmAltaProveedor.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new AltaProveedor(servidor);
				actualizarPanel(contentPane);
			}
		});
		
		mntmModificarProveedor.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new  ModificarProveedor(servidor);
				actualizarPanel(contentPane);
			}
		});
		mntmEliminarProveedor.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				contentPane = new EliminarProveedor(servidor);
				actualizarPanel(contentPane);
			
			}
		});
		mntmAltaStockRodamientos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				
				actualizarPanel(contentPane);
			
			}
		});
		mntmModificarStockRodamientos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				
				actualizarPanel(contentPane);
			
			}
		});
		mntmEliminarStockRodamientos.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				
				actualizarPanel(contentPane);
			
			}
		});
		mntmGenerarFactura.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				
				actualizarPanel(contentPane);
			
			}
		});
		mntmSolicitudCotizacion.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				limpiarPanel(contentPane);
				
				actualizarPanel(contentPane);
			
			}
		});
		
		
		
	}
	/**
	 * Panel manager
	 * @param contentPane 
	 */
	private void actualizarPanel(JPanel contentPane){
		repaint();
		setContentPane(contentPane);
		validate();
		setVisible(true);
	}
	private void limpiarPanel(JPanel contentPane){
		getContentPane().remove(contentPane);
		repaint();
		contentPane = null;
		validate();
		
	}

}
